package com.ymcv.proyecto7.view;

import java.text.SimpleDateFormat;
import java.util.Calendar;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Switch;
import android.widget.TextView;

import com.ymcv.proyecto7.R;
import com.ymcv.proyecto7.controller.ServicioController;
import com.ymcv.proyecto7.controller.UsuarioController;
import com.ymcv.proyecto7.model.entity.Servicio;
import com.ymcv.proyecto7.model.entity.Usuario;

public class Servicio_Fragment extends Fragment implements OnClickListener {

	TextView tvEnEspera;

	LinearLayout llPush;
	TextView tvCliente, tvReferencia;

	Button bAceptar;

	// Servicio
	Button bActualizar;
	TextView tvFechaAct, tvFechaPunto, tvFechaAbordaje, tvFechaDestino,
			tvTarifa, tvPago;
	Switch swPunto, swAbordaje, swDestino;
	EditText etPago;
	LinearLayout llTarifa;
	Button bBueno, bRegular,bMalo;
	
	UsuarioController conU;
	Usuario u;
	ServicioController conS;
	Servicio s;

	private OnServicioListener onServicioListener;


	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		Log.i("Servicio", "view");
		return inflater.inflate(R.layout.fragment_servicio, container, false);
	}

	@Override
	public void onViewCreated(View view, Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onViewCreated(view, savedInstanceState);
		Log.i("Servicio", "created");
		tvEnEspera = (TextView) getView().findViewById(R.id.tvEnEspera);
		llPush = (LinearLayout) getView().findViewById(R.id.llPush);
		tvCliente = (TextView) getView().findViewById(R.id.tvCliente);
		tvReferencia = (TextView) getView().findViewById(R.id.tvReferencia);
		bAceptar = (Button) getView().findViewById(R.id.bAceptar);
		bAceptar.setOnClickListener(this);
		llPush.setVisibility(View.GONE);

		bActualizar = (Button) getView().findViewById(R.id.bActualizar);
		bActualizar.setOnClickListener(this);
		tvFechaAct = (TextView) getView().findViewById(R.id.tvFechaAct);

		tvFechaPunto = (TextView) getView().findViewById(R.id.tvFechaPunto);
		swPunto = (Switch) getView().findViewById(R.id.swPunto);
		swPunto.setEnabled(false);
		tvFechaAbordaje = (TextView) getView().findViewById(
				R.id.tvFechaAbordaje);
		swAbordaje = (Switch) getView().findViewById(R.id.swAbordaje);
		swAbordaje.setEnabled(false);
		tvFechaDestino = (TextView) getView().findViewById(R.id.tvFechaDestino);
		swDestino = (Switch) getView().findViewById(R.id.swDestino);
		swDestino.setEnabled(false);
		llTarifa = (LinearLayout)getView().findViewById(R.id.llTarifa);
		tvTarifa = (TextView) getView().findViewById(R.id.tvTarifa);
		tvPago = (TextView) getView().findViewById(R.id.tvPago);
		etPago = (EditText) getView().findViewById(R.id.etPago);
		llTarifa.setVisibility(View.GONE);

		bBueno = (Button)getView().findViewById(R.id.bBueno);
		bRegular = (Button)getView().findViewById(R.id.bRegular);
		bMalo = (Button)getView().findViewById(R.id.bMalo);
		desactivarCalificacion();
		
		cargarActualizacion();

		cargarServicio();
	}
	
	public void activarCalificacion(){
		bBueno.setEnabled(true);
		bRegular.setEnabled(true);
		bMalo.setEnabled(true);
	}

	public void desactivarCalificacion(){
		bBueno.setEnabled(false);
		bRegular.setEnabled(false);
		bMalo.setEnabled(false);
	}
	
	public void cargarActualizacion() {
		conU = new UsuarioController(getActivity().getApplicationContext());
		u = conU.obtenerUsuario();
		tvFechaAct.setText("");
		if (u.getFecha_mod() != null) {
			tvFechaAct.setText(u.getFecha_mod());
		}
	}

	public void cargarServicio() {
		conS = new ServicioController(getActivity().getApplicationContext());
		s = conS.obtenerServicio();
		limpiarServicio();
		if (s != null) {
			if (s.getFecPunto() != null) {
				tvFechaPunto.setText(s.getFecPunto());
			}
			if (s.getFecAbordaje() != null) {
				tvFechaAbordaje.setText(s.getFecAbordaje());
			}
			if (s.getFecDestino() != null) {
				tvFechaDestino.setText(s.getFecDestino());
			}
		}
	}

	public void tiempoAcepta(long tiempo) {
		Calendar c = Calendar.getInstance();
		c.setTimeInMillis(tiempo);
		SimpleDateFormat sdf = new SimpleDateFormat("mm:ss");
		bAceptar.setText(getString(R.string.bAceptar) + " "
				+ sdf.format(c.getTime()));
	}

	public void limpiarServicio() {
		tvFechaPunto.setText("");
		tvFechaAbordaje.setText("");
		tvFechaDestino.setText("");
		tvTarifa.setText("");
		etPago.setText("");
	}

	public void putPush(Bundle extras) {
		tvEnEspera.setVisibility(View.GONE);
		llPush.setVisibility(View.VISIBLE);
		tvCliente.setText(extras.getString("nombre") + " "
				+ extras.getString("apellido") + " - "
				+ extras.getString("dirorigen"));
		tvReferencia.setText(extras.getString("reforigen"));
	}

	@Override
	public void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		Log.i("servicio", "resume");
		Bundle extras = getActivity().getIntent().getExtras();
		if (extras != null) {
			if (extras.getBoolean("push")) {
				Log.i("args", "hay push para cargar");
				putPush(extras);
			} else {
				removePush();
				Log.i("args", "sin push");
			}
		} else {
			Log.i("servicio", "extras es null");
		}
	}

	public void removePush() {
		tvEnEspera.setVisibility(View.VISIBLE);
		llPush.setVisibility(View.GONE);
		tvCliente.setText("");
		tvReferencia.setText("");

	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.bActualizar:
			if (onServicioListener != null) {
				onServicioListener.onActualizar(v);
			}
			break;
		case R.id.bAceptar:
			if (onServicioListener != null) {
				onServicioListener.onAceptar(v);
			}
			break;
		default:
			break;
		}
	}


	public interface OnServicioListener {
		public void onActualizar(View v);
		public void onAceptar(View v);
		public void onLLegadaPunto(View v);
	}
	
	public OnServicioListener getOnServicioListener() {
		return onServicioListener;
	}

	public void setOnServicioListener(
			OnServicioListener onServicioListener) {
		this.onServicioListener = onServicioListener;
	}

	
}
